package com.qf.util;

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

import java.security.MessageDigest;
import java.util.Base64;

/**
 * --- 天道酬勤 ---
 *
 * @author QiuShiju
 * @date 2025/4/24
 * @desc 密码加密工具类
 */
public class PwdEncrypt {

    /**
     * 加密密码 - SHA-256加密算法
     *
     * @param password 密码
     * @return 加密后的密码
     * @throws Exception
     */
    public static String hashPasswordBySHA256(String password) throws Exception {
        MessageDigest digest = MessageDigest.getInstance("SHA-256");
        digest.update(password.getBytes());

        // 获取哈希值
        byte[] hash = digest.digest();
        return Base64.getEncoder().encodeToString(hash);
    }

    // 参数是强度系数
    private static final BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(12);

    /**
     * 加密密码 - BCrypt加密算法
     *
     * @param password 密码
     * @return 加密后的密码
     */
    public static String hashPasswordByBCrypt(String password) {
        return encoder.encode(password); // 自动包含盐值+自适应哈希
    }

    // 添加密码验证方法
    public static boolean checkPassword(String rawPassword, String encodedPassword) {
        return encoder.matches(rawPassword, encodedPassword);
    }
}
